/**
 * 每个controller中对应接口均有，list、add、detail、 edit、delete等通用操作
 * 将较为通用的接口单独抽离，使用函数柯里化方式对api基础路径进行指定，并收集传入参数
 */
import request from '@/utils/request'

/**
 * 获取列表
 */
function commonList(controller) {
  // @param params 列表数据筛选参数
  return function (params) {
    return request({
      url: `/${controller}`,
      method: 'get',
      params
    })
  }
}

/**
 * 添加记录
 */
function commonAdd(controller) {
  // @param data 记录数据内容, post数据，使用对象格式
  return function (data) {
    return request({
      url: `/${controller}`,
      method: 'post',
      data
    })
  }
}

function commonDetail(controller) {
  return function (id) {
    return request({
      url: `/${controller}/${id}`,
      method: 'get'
    })
  };

}

/**
 * 编辑记录
 */
function commonEdit(controller) {
  // @param id  记录id
  // @param data  修改数据
  return function (id, data) {
    return request({
      url: `/${controller}/${id}`,
      method: 'put',
      data
    })
  }
}

/**
 * 批量删除
 */
function commonBatchDelete(controller) {
  // @param ids 要删除的数据id数组，字符串格式 "id1, id2, id3"
  return function (ids) {
    return request({
      url: `/${controller}`,
      method: 'DELETE',
      params: { ids }
    })
  }
}

export { commonList, commonAdd, commonDetail, commonEdit, commonBatchDelete }
